<?php

namespace app\api\controller;

use app\api\model\Intros;
use app\api\model\Settings;
use app\common\controller\Api;
use fast\Random;
use think\Config;

/**
 * 首页接口
 */
class Index extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * 首页
     *
     */
    public function index()
    {
        $intros = Intros::where('is_show', 'yes')->select();
        $intros ? $this->success('请求成功', ['intros' => $intros]) : $this->error('没有数据');
    }

    /**
     * 上传文件
     */
    public function upload()
    {
        Config::set('default_return_type', 'json');
        $image = $this->request->post('image');
        if (empty($image)) {
            $this->error('上传图片不能为空');
        }
        //格式
        preg_match('/^(data:\s*image\/(\w+);base64,)/', $image, $matches);
        $type = strtolower($matches[2]);
        if (!in_array($type, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'webp'])) {
            $this->error('图片格式不正确');
        }
        //大小
        $image_len = strlen($image);
        $size = $image_len - ($image_len / 8) * 2;
        if ($size > 10 * 1024 * 1024) {
            $this->error('图片大小不能超过10M');
        }
        $path = ROOT_PATH . '/public';
        $file = '/uploads/'.date('Ymd');
        if (!is_dir($path . $file)) {
            mkdir($path . $file, 0755, true);
        }
        $file_name = $file . '/' . md5($image) . '.' . $type;
        if (!file_exists($path . $file_name)) {
            $result = file_put_contents($path . $file_name, base64_decode(str_replace($matches[1], '', $image)));
            $result ? $this->success('上传成功', ['url' => $file_name]) : $this->error('上传失败');
        }
        $this->success('上传成功', ['url' => $file_name]);
    }

    public function service($key)
    {
        $value = Settings::getValue($key);
        $value ? $this->success('请求成功', ['value' => $value]) : $this->error('没有数据');
    }
}
